home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / usenet / volume7 / nethack3 / patch7y < prev    next >
Encoding:
Internet Message Format  |  1990-02-26  |  58.5 KB

  1. Path: uunet!jarthur!elroy.jpl.nasa.gov!usc!cs.utexas.edu!rutgers!mit-eddie!uw-beaver!zephyr.ens.tek.com!tekred!saab!billr
  2. From: billr@saab.CNA.TEK.COM (Bill Randle)
  3. Newsgroups: comp.sources.games
  4. Subject: v09i025:  NetHack3 -  display oriented dungeons & dragons (Ver. 3.0), Patch7y
  5. Message-ID: <5239@tekred.CNA.TEK.COM>
  6. Date: 24 Feb 90 01:07:41 GMT
  7. Sender: news@tekred.CNA.TEK.COM
  8. Lines: 1219
  9. Approved: billr@saab.CNA.TEK.COM
  10.  
  11. Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
  12. Posting-number: Volume 9, Issue 25
  13. Archive-name: NetHack3/Patch7y
  14. Patch-To: NetHack3: Volume 7, Issue 56-93
  15.  
  16.  
  17.  
  18. #! /bin/sh
  19. # This is a shell archive.  Remove anything before this line, then unpack
  20. # it by saving it into a file and typing "sh file".  To overwrite existing
  21. # files, type "sh file -c".  You can also feed this as standard input via
  22. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  23. # will see the following message at the end:
  24. #        "End of archive 25 (of 30)."
  25. # Contents:  Install.dos src/monst.c1
  26. # Wrapped by billr@saab on Wed Feb 21 10:04:47 1990
  27. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  28. if test -f 'Install.dos' -a "${1}" != "-c" ; then 
  29.   echo shar: Renaming existing file \"'Install.dos'\" to \"'Install.dos.orig'\"
  30.   mv -f 'Install.dos' 'Install.dos.orig'
  31. fi
  32. echo shar: Extracting \"'Install.dos'\" \(16432 characters\)
  33. sed "s/^X//" >'Install.dos' <<'END_OF_FILE'
  34. X    Instructions for compiling and installing NetHack 3.0
  35. X           on an MS-DOS, TOS, or OS/2 system
  36. X    =====================================================
  37. X        (or, How to make PC, ST, and OS/2 NetHack 3.0)
  38. X              Last revision: 17 Feb 1990
  39. X
  40. X    (Credit for a runnable full PC NetHack 3.0 goes to the overlay team of
  41. X    Pierre Martineau, Stephen Spackman, Norm Meluch, and Kevin Smolkowski,
  42. X    who built on the work of Steve Creps and Mike Threepoint.  Credit for
  43. X    ST and OS/2 NetHack 3.0 goes to Eric Smith and Timo Hakulinen,
  44. X    respectively.)
  45. X
  46. X1.  Make sure all the NetHack files are in the appropriate directory structure.
  47. X    You should have a main directory with subdirectories src, include, auxil,
  48. X    others, amiga, mac, and vms.  If you do not follow this structure, the
  49. X    Makefile will not function properly.
  50. X
  51. X    All the shared and UNIX-specific .c files and the source Makefile belong
  52. X    in src; all the PC .c files and make files belong in others; all the .h
  53. X    files belong in include; other assorted files belong in auxil.  We will
  54. X    not need any of the files from the amiga, mac, and vms directories.
  55. X
  56. X    If you downloaded or ftp'd the sources from a UNIX system, the lines
  57. X    will probably end in UNIX-style newlines, instead of the carriage
  58. X    return and line feed pairs used by DOS and OS/2.  Turbo C 2.0 in
  59. X    particular dislikes these; you'll have to convert them (with a utility
  60. X    like Rahul Dhesi's "flip").  Also, every file should end with an empty
  61. X    line, because both Microsoft C and MASM have a habit of ignoring the
  62. X    last line of each file. (TOS compilers generally don't have either
  63. X    problem).
  64. X
  65. X2.  Move the .c files from the others directory to your src directory
  66. X    based on the following decisions.  You will probably want to include
  67. X    all of these files.
  68. X
  69. X    You will definitely need pc*.c and msdos.c.
  70. X
  71. X    The file termcap.uu is the fixed version of the Fred Fish termcap library.
  72. X    You will need to run a uudecode utility on it to generate the file
  73. X    termcap.arc.  termcap.arc contains several files of termcap routines.
  74. X    Using them with NetHack involves very little knowledge of the UNIX concept
  75. X    of a termcap database; mostly you need to know enough to set a TERM
  76. X    environment variable.  You can unarc termcap.arc here in the others
  77. X    directory, but if you are going to use it, it is probably best to unarc a
  78. X    copy in the src directory.  That way you will not miss copying any
  79. X    files over.  Wherever you unarc it, get rid of the included makefile
  80. X    since a better version has been provided as Makefile.lib.
  81. X
  82. X    random.c is only needed if you want the high-quality random number
  83. X    generation routines.
  84. X
  85. X    trampoli.c and ovlmgr.obj files are needed for the MS-DOS overlays.
  86. X    The file ovlmgr.uu (MS-DOS overlay manager) is the uuencoded assembled
  87. X    object module for the overlay manager in case you do not have MASM.
  88. X    You will need to run a uudecode utility on this file too, to generate
  89. X    ovlmgr.obj.  
  90. X
  91. X    TOS users should use others/lev_lex.c instead of src/lev_lex.c.
  92. X    MS-DOS users should be able to use either, but the one in src
  93. X    is smaller.  If you have flex or some other lex work-alike, use
  94. X    that to produce lev_lex.c from lev_comp.l.
  95. X
  96. X    Obviously, TOS users don't need the MS-DOS overlay functions.
  97. X    Moreover, the GCC "curses" library has termcap routines built
  98. X    in, so if you have this you don't need termcap.arc.
  99. X
  100. X3.  Now look at Makefile.* in your others directory.  Consult the list below
  101. X    and pick out the makefile most appropriate to your system.  Rename this
  102. X    file to "Makefile" (no extension), and move it into your src directory.
  103. X
  104. X    DOS:
  105. X    Microsoft C 5.1     Makefile.ovl
  106. X    Microsoft C 4.0     Makefile.pc
  107. X    Turbo C 2.0        Makefile.tcc
  108. X    OS/2:
  109. X    Microsoft C 5.1     Makefile.os2
  110. X    TOS:
  111. X    GCC 1.34        Makefile.st
  112. X
  113. X    The PC NetHack makefiles are set up for NDMAKE, a public domain
  114. X    "make" utility.  Both Microsoft's and Borland's "make" leave much to
  115. X    be desired.  It is worth the extra effort to get NDMAKE if you don't
  116. X    already have it.  Among other things, NDMAKE automatically generates
  117. X    link response files when the link command involves so many objects
  118. X    that the command would become longer than DOS can handle.  If you must
  119. X    use Microsoft's or Borland's "make", you'll need to edit the makefile
  120. X    into a form your make can use, and add instructions to generate a link
  121. X    response file.
  122. X
  123. X    The ST NetHack makefile should work with either the widely available
  124. X    PD make, or (much better) GNU Make.
  125. X
  126. X    If you're using a different compiler, you will have to adapt one of
  127. X    the makefiles to your needs.  In particular, change the CC and CFLAGS
  128. X    macros to your C compiler's file name and the parameters to pass it.
  129. X
  130. X    For DOS users, if you are going to be constructing the Fred Fish termlib
  131. X    you will need the Makefile.lib.  Copy this to your source directory too,
  132. X    and do not change its name.
  133. X
  134. X    Makefile.top in the top directory and Makefile.aux(il) in the
  135. X    auxil directory are for UNIX NetHack.  You may delete them.
  136. X
  137. X4.  Now go to the include subdirectory to edit a couple of the header files
  138. X    there.
  139. X
  140. X    First edit config.h according to the comments to match your system and
  141. X    desired set of features.  Mostly you need to check the WIZARD option,
  142. X    make sure the HACKDIR is set properly, and check TERMLIB and COMPRESS.
  143. X
  144. X    Also edit pcconf.h for PC or OS/2 NetHack, or tosconf.h for ST NetHack.
  145. X    pcconf.h should not need much editing if you are including termcap.uu,
  146. X    random.c and ovlmgr.uu.  If you are not including any of these you will
  147. X    need to comment out TERMLIB, RANDOM, and/or OVERLAY respectively.
  148. X
  149. X    Commenting out the #define TERMLIB in pcconf.h/tosconf.h to disable
  150. X    use of termcap routines (relying on the ANSI_DEFAULT feature) will make
  151. X    your job a bit easier.  However, you can compile with both and simply
  152. X    not set your TERM variable if you do not wish to use the termcap file
  153. X    settings.
  154. X
  155. X    ST and OS/2 NetHackers can skip to the next section, since the entire game
  156. X    will fit in less than one megabyte.
  157. X
  158. X PC NetHackers:
  159. X
  160. X    To compile under MS-DOS, you must either produce an overlaid executable or
  161. X    make some very difficult decisions about which features to include.
  162. X
  163. X    The base size of a PC NetHack executable, with no extra features or
  164. X    overlays, will be around 570 kilobytes.  Anything over 590K is likely not
  165. X    to work.  Here's an incomplete and outdated list of the approximate costs
  166. X    of various additional features in terms of executable size, using
  167. X    Microsoft C:
  168. X
  169. X    WIZARD            3K
  170. X    LOGFILE
  171. X    NEWS
  172. X    COMPRESS        2K
  173. X    ZEROCOMP
  174. X    CHDIR
  175. X
  176. X    POLYSELF       31K
  177. X    THEOLOGY       11K
  178. X    SOUNDS            6K
  179. X    KICK
  180. X
  181. X    THRONES         3K
  182. X    FOUNTAINS        2K
  183. X    SINKS            5K
  184. X    ALTARS            4K
  185. X
  186. X    WALLIFIED_MAZE        1K
  187. X    REINCARNATION        7K
  188. X    STRONGHOLD       13K
  189. X
  190. X    ORACLE
  191. X    MEDUSA
  192. X    KOPS
  193. X    ARMY            1K
  194. X    WORM
  195. X    GOLEMS            2K
  196. X    INFERNO
  197. X    SEDUCE
  198. X    TOLKIEN
  199. X    PROBING         1K
  200. X    WALKIES         4K
  201. X    SHIRT
  202. X    MUSIC            6K
  203. X    TUTTI_FRUTTI
  204. X    SPELLS           10K
  205. X    NAMED_ITEMS
  206. X
  207. X    ELBERETH        3K
  208. X    EXPLORE_MODE        2K
  209. X    HARD
  210. X
  211. X    REDO            1K
  212. X    COM_COMPL        1K
  213. X    CLIPPING
  214. X
  215. X    OVERLAY            0K
  216. X    DGK            7K
  217. X    TERMLIB
  218. X    RANDOM            1K
  219. X    SHELL
  220. X    TEXTCOLOR        1K
  221. X
  222. X    Using Microsoft C and overlays, we've managed to enable everything.
  223. X    Unfortunately, the overlay manager doesn't work with Turbo C.  Using
  224. X    Turbo C, we eked by with just WIZARD, ZEROCOMP, BITFIELDS, ELBERETH,
  225. X    HARD, REDO, DGK and TEXTCOLOR.  There's very little leeway for nifty
  226. X    features without an overlay manager.
  227. X
  228. X5.  If you're using a compiler not in the list in step 3, you may want to look
  229. X    through system.h, in the include directory.  This file matches the return
  230. X    and parameter types for system calls and library routines with various
  231. X    flavors of compilers and operating systems.  Leaving this file alone is
  232. X    unlikely to cause problems, but if you get compile errors with any
  233. X    functions in the standard library, it's worth checking the declarations
  234. X    there.
  235. X
  236. X6.  If you want to change the high score list behavior, examine the top of
  237. X    topten.c, in the src directory.  You may want to change the definitions of
  238. X    PERSMAX, POINTSMIN, and ENTRYMAX.  I set POINTSMIN to 51 and ENTRYMAX to
  239. X    50 to keep the size of the score list down.
  240. X
  241. X7.  Go to the src directory and edit the top of your Makefile.  Be sure the
  242. X    directory you want the game installed in actually exists.
  243. X
  244. X    If you elected not to use the high-quality BSD random number routines by
  245. X    commenting out RANDOM in pcconf.h or tosconf.h, comment out (or set equal
  246. X    to nothing) the RANDOM macro in your Makefile.
  247. X
  248. X    If you elected to use Fred Fish's termcap library (bundled in as
  249. X    termcap.arc), you will have to generate termcap.lib from those sources
  250. X    by typing make -f makefile.lib termlib.lib.
  251. X    DOS users must set the TERMLIB option in Makefile.ovl(msc) to link in
  252. X    the resulting termlib.lib.
  253. X
  254. X    If you're using Makefile.ovl and you have Microsoft's Macro Assembler
  255. X    version 5.1, you may want to enable the option in the make file to rebuild
  256. X    ovlmgr.obj, although a ready-made object file is provided for those of you
  257. X    without.
  258. X    
  259. X    If you are recompiling after patching your sources, or if you got your
  260. X    files from somewhere other than the official distribution, "touch
  261. X    makedefs.c" to ensure that certain files (onames.h and pm.h) are remade,
  262. X    lest potentially troublesome timestamps fool "make".
  263. X
  264. X8.  Now, enter "make all", and take a long siesta; your computer will be
  265. X    occupied for a long time.  If all goes well, you will get an executable.
  266. X    If you tried to compile in too many features, you will probably get a
  267. X    dysfunctional executable, and will have to start over.
  268. X
  269. X    Also, as of pl7 with OVERLAY you might need to use MAKE45L.EXE for your
  270. X    compile.  The Makefile.ovl with all of its OVLx funness is a bit much
  271. X    for even generic NDMAKE45.
  272. X
  273. X    Hint:  If you're short on memory, you might enter "make -n all
  274. X    >script.bat", and then in DOS enter "script", or in TOS use the Gulam
  275. X    command "source script.bat".  GCC users will be short on memory if
  276. X    they only have 2 megabytes. Indeed, some files will not compile in
  277. X    2 megabytes with the GCC 1.36; for these you'll either have to turn
  278. X    off the -O option or use an earlier version of the GCC.
  279. X
  280. X9.  Make sure the support files-- data, rumors, cmdhelp, opthelp, help, hh,
  281. X    history, license, and oracles (if ORACLES was #define'd)-- were copied
  282. X    to the game directory.  If not, move them there from the auxil directory
  283. X    yourself.  rumors can be created manually by entering "makedefs -r";
  284. X    data by entering "makedefs -d".
  285. X
  286. X    If you compiled in the compiled levels (if STRONGHOLD was #define'd), make
  287. X    sure castle, tower?, and possibly endgame are there, too.  They can be
  288. X    created manually by entering "lev_comp filename.des", where filename.des
  289. X    is the appropriate description file (found in the auxil directory).
  290. X
  291. X10. Go to the others directory.  Copy NetHack.cnf, or Atari.cnf for TOS, to
  292. X    your game directory as "NetHack.cnf".  Edit it to reflect your particular
  293. X    setup and personal preferences, following the comments.
  294. X
  295. X    If you compiled in the TERMLIB feature, also move the "termcap" file to
  296. X    your game directory.  (Note:  GCC's termcap routines have built-in
  297. X    defaults, so the termcap file is not necessary with that compiler.)
  298. X
  299. X    To use funky graphics charaters in TOS, uudecode "atarifnt.uue" and unarc
  300. X    the resulting "atarifnt.arc".  This contains a program to run that makes
  301. X    some line graphics characters available to NetHack.  To use them, uncomment
  302. X    the appropriate line in your NetHack.cnf file, and run the program before
  303. X    running NetHack (you can put the program in an AUTO folder if you want).
  304. X
  305. X    If you'll be running NetHack from a different subdirectory, you will
  306. X    want to "set HACKDIR=\games\nethack" (or whatever directory you want to
  307. X    use) now.  Add it to your autoexec.bat (in DOS), if you'll be playing
  308. X    often.
  309. X
  310. X11. Play NetHack.  If it works, you're done!
  311. X
  312. X
  313. XNotes
  314. X-----
  315. X
  316. X1)  Save files and bones files from previous versions will not work with
  317. X    NetHack 3.0.  Don't bother trying to keep them.  Record (score) files
  318. X    from before 3.0 patchlevel 7 will almost work, but you need to make one
  319. X    change manually to them:  At the end of each line is a word or phrase
  320. X    specifying what killed the player.  Change the string to start with the
  321. X    words "killed by", "killed by a", or "killed by an" (whichever is
  322. X    appropriate).  If the death was petrification, it should read "petrified
  323. X    by" instead of "killed by".  Don't change "starvation", "quit", "escaped",
  324. X    or "ascended".
  325. X
  326. X2)  To install an update of NetHack after changing something, enter "make"
  327. X    from the src directory.  If you add, delete, or reorder monsters or
  328. X    objects, or you change the format of saved level files, delete any save
  329. X    and bones files.  (Trying to use such files sometimes produces amusing
  330. X    confusions on the game's part, but usually crashes.)
  331. X
  332. X3)  While making the PC and OS/2 versions, during linking the Microsoft
  333. X    Overlay Linker will need temporary storage space.  Make sure you have
  334. X    about a meg of free disk where ever you have defined your temporary
  335. X    storage.
  336. X
  337. X4)  About overlays:
  338. X
  339. X    First and foremost:  We have been developing with MSC 5.1 as a compiler
  340. X    and NDmake 4.5 as a make.  NDmake is readily available on the Usenet,
  341. X    obtaining MSC might be more of a problem.  MSC 5.0 is broken.  You *will
  342. X    not* be able to compile the overlay version with that compiler due to
  343. X    problems with the /Gt option allowing the CONST segment to become
  344. X    > 64k when linking.
  345. X
  346. X    Anyone who uses Turbo C is free to try to compile the game.  Not only does
  347. X    TLINK not do overlays, it chokes on huge projects, so you will need to use
  348. X    some other linker, probably the Microsoft Overlay Linker.  Also,
  349. X    you will more than likely have to find a way to tell the compiler to
  350. X    keep most of your data out of the default data segment (whence the mystic
  351. X    /Gt24 for MSC in Makefile.ovl).  Certain other problems can probably be
  352. X    anticipated.  Feel free to try other compilers and linkers and please do
  353. X    inform us if you succeed.
  354. X
  355. X    If you use the custom overlay manager, ovlmgr.asm, you will want to use
  356. X    Makefile.ovl.  Otherwise you will have to roll your own make file;
  357. X    Makefile.ovl may serve you as a stylistic guide, but ovlmgr's optimisation
  358. X    characteristics are very different from those of (for example) the
  359. X    standard Microsoft Overlay Manager:  you will find the actual partitioning
  360. X    of the overlays entirely inappropriate to a more conventional system.
  361. X
  362. X    To make the game, follow the instructions above for arrangement of files
  363. X    from the others directory to src.  If you are using the standard Microsoft
  364. X    Overlay Linker (which we have been assuming you are) you should make doubly
  365. X    certain that OVERLAY is defined in pcconf.h, since otherwise things will
  366. X    compile properly but very ugly things are likely to happen wherever
  367. X    function pointers cross overlay boundaries - the linker is a little thick
  368. X    about that.  Now check the variables at the top of the makefile for
  369. X    correctness on your system.  Once you have the compiler, linker, source
  370. X    files moved, and the include files configured, go to the src directory and
  371. X    type "make install".
  372. X
  373. X    RAM requirement for the overlay version is about 550k.  You can load the
  374. X    program in less RAM, but you will begin to experience a serious amount
  375. X    of disk thrashing at 530k or less.  Absolute minimum will probably be in
  376. X    the neighborhood of 400-425k.  You do not want to run the program like
  377. X    that!  And, as always, the more free RAM the better.
  378. X
  379. X    As of patch level 7, version 3.0 has an added feature in the Makefile.  This
  380. X    feature enables a structured break up of the object modules so that we
  381. X    can link heavily used functions together without actual source code
  382. X    movement.  This has provided a great speed improvement for this release.
  383. X
  384. X    The versions of the software we used are:
  385. X
  386. X    MS Overlay Linker       3.65
  387. X    MSC             5.1
  388. X    MASM            5.1
  389. X
  390. X    NDMake            4.5
  391. X
  392. X    On a 286 10MHz PC you will have nethack in about 2 - 2.5 hours.
  393. X    Hope you enjoy the game.  We have worked very hard to try to bring it back
  394. X    to the PC.
  395. END_OF_FILE
  396. if test 16432 -ne `wc -c <'Install.dos'`; then
  397.     echo shar: \"'Install.dos'\" unpacked with wrong size!
  398. fi
  399. # end of 'Install.dos'
  400. if test -f 'src/monst.c1' -a "${1}" != "-c" ; then 
  401.   echo shar: Renaming existing file \"'src/monst.c1'\" to \"'src/monst.c1.orig'\"
  402.   mv -f 'src/monst.c1' 'src/monst.c1.orig'
  403. fi
  404. echo shar: Extracting \"'src/monst.c1'\" \(39815 characters\)
  405. sed "s/^X//" >'src/monst.c1' <<'END_OF_FILE'
  406. X/*    SCCS Id: @(#)monst.c    3.0    89/11/21
  407. X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  408. X/* NetHack may be freely redistributed.  See license for details. */
  409. X
  410. X/* since this file is also used in auxiliary programs, don't include all the
  411. X * function declarations for all of nethack
  412. X */
  413. X#define EXTERN_H
  414. X#include "config.h"
  415. X#include "permonst.h"
  416. X#include "monsym.h"
  417. X#include "eshk.h"
  418. X#include "vault.h"
  419. X#include "epri.h"
  420. X
  421. X#define NO_ATTK     { 0, 0, 0, 0 }
  422. X
  423. X#ifdef C
  424. X#undef C
  425. X#endif
  426. X#ifdef TEXTCOLOR
  427. X#include "color.h"
  428. X#define C(color)    color
  429. X#define HI_DOMESTIC    WHITE        /* use for player + friendlies */
  430. X#define HI_LORD     MAGENTA
  431. X#else
  432. X#define C(color)
  433. X#endif
  434. X
  435. X#ifndef SPLITMON_2
  436. Xstruct permonst playermon = {        /* used by weapons bonus code */
  437. X    "player", S_HUMAN, 1, 10, 10, 0, 0, G_GENO | G_NOGEN,
  438. X    { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  439. X    45, 400, PL_NSIZ, MS_SILENT, MZ_HUMAN,
  440. X    M1_NEEDPICK | M1_HUMANOID | M1_COLLECT,
  441. X    M2_HUMAN | M2_STRONG, C(HI_DOMESTIC)
  442. X},    *uasmon = &playermon;
  443. X#endif /* SPLITMON_2 */
  444. X
  445. X/*
  446. X *    Rule #1:    monsters of a given class are contiguous in the
  447. X *            mons[] array.
  448. X *
  449. X *    Rule #2:    monsters of a given class are presented in ascending
  450. X *            order of strength.
  451. X *
  452. X *    Rule #3:    monster frequency is included in the geno mask;
  453. X *            the frequency can be from 0 to 7.  0's will also
  454. X *            be skipped during generation.
  455. X *
  456. X * Guidelines for color assignment:
  457. X *
  458. X *    * Use the same color for all `growth stages' of a monster (ex.
  459. X *      little dog/big dog, baby naga/full-grown naga.
  460. X *
  461. X *    * Use colors given in names wherever possible. If the class has `real'
  462. X *      members with strong color associations, use those.
  463. X *
  464. X *    * Favor `cool' colors for cold-resistent monsters, `warm' ones for
  465. X *      fire-resistent ones.
  466. X *
  467. X *    * Try to reserve purple (magenta) for powerful `ruler' monsters (queen
  468. X *      bee, kobold lord, &c.).
  469. X *
  470. X *    * Subject to all these constraints, try to use color to make as many
  471. X *      distinctions as the / command (that is, within a monster letter
  472. X *      distinct names should map to distinct colors).
  473. X *
  474. X * The aim in assigning colors is to be consistent enough so a player can
  475. X * become `intuitive' about them, deducing some or all of these rules
  476. X * unconsciously. Use your common sense.
  477. X */
  478. X
  479. X#if defined(SMALLDATA) && !defined(MAKEDEFS_C)
  480. X        /* if it's for SMALLDATA, say so, right? (KL) */
  481. Xstruct permonst *mons;       /* for SMALLDATA - mons data stored in NetHack app */
  482. X#else
  483. X#ifndef SPLITMON_2
  484. Xstruct permonst mons[] = {
  485. X/*    ants    */
  486. X    { "giant ant",    S_ANT, 2, 18, 3, 0, 0, (G_GENO | G_SGROUP | 3),
  487. X      { { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  488. X      1, 10, 0, MS_SILENT, MZ_TINY, M1_ANIMAL | M1_NOHANDS,
  489. X      M2_HOSTILE | M2_CARNIVORE | M2_EGGS, C(BROWN) },
  490. X    { "soldier ant", S_ANT, 3, 18, 3, 0, 0, (G_GENO | G_SGROUP | 2),
  491. X      { { AT_BITE, AD_PHYS, 2, 4 }, { AT_STNG, AD_DRST, 3, 4 },
  492. X      NO_ATTK, NO_ATTK, NO_ATTK }, 2, 20, 0, MS_SILENT, MZ_TINY,
  493. X      M1_ANIMAL | M1_NOHANDS | M1_POIS | M1_POIS_RES,
  494. X      M2_HOSTILE | M2_CARNIVORE | M2_EGGS, C(BLUE) },
  495. X    { "fire ant", S_ANT, 3, 18, 3, 10, 0, (G_GENO | G_SGROUP | 1),
  496. X      { { AT_BITE, AD_FIRE, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  497. X      3, 30, 0, MS_SILENT, MZ_TINY, M1_ANIMAL | M1_NOHANDS | M1_FIRE_RES,
  498. X      M2_HOSTILE | M2_CARNIVORE | M2_EGGS, C(RED) },
  499. X    { "giant beetle", S_ANT, 5, 6, 4, 0, 0, (G_GENO | 3),
  500. X      { { AT_BITE, AD_PHYS, 3, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  501. X      1, 10, 0, MS_SILENT, MZ_LARGE, M1_ANIMAL | M1_NOHANDS | M1_POIS |
  502. X      M1_POIS_RES, M2_HOSTILE | M2_CARNIVORE, C(BLACK) },
  503. X    { "killer bee", S_ANT, 1, 18, -1, 0, 0, (G_GENO | G_LGROUP | 2),
  504. X      { { AT_STNG, AD_DRST, 1, 3 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  505. X      1, 10, 0, MS_BUZZ, MZ_TINY, M1_ANIMAL | M1_FLY | M1_NOHANDS |
  506. X      M1_POIS | M1_POIS_RES, M2_HOSTILE, C(YELLOW) },
  507. X    { "queen bee", S_ANT, 9, 24, -4, 0, 0, (G_GENO | G_NOGEN),
  508. X      { { AT_STNG, AD_DRST, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  509. X      1, 10, 0, MS_BUZZ, MZ_TINY, M1_ANIMAL | M1_FLY | M1_NOHANDS |
  510. X      M1_POIS | M1_POIS_RES, M2_HOSTILE | M2_PRINCE, C(HI_LORD) },
  511. X/*    blobs    */
  512. X    { "acid blob", S_BLOB, 1, 3, 8, 0, 0, (G_GENO | 2),
  513. X      { { AT_NONE, AD_ACID, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  514. X      3, 30, 0, MS_SILENT, MZ_TINY,
  515. X      M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_SLEE_RES | M1_STON_RES |
  516. X      M1_ACID, M2_WANDER, C(GREEN) },
  517. X    { "quivering blob", S_BLOB, 5, 1, 8, 0, 0, (G_GENO | 2),
  518. X      { { AT_TUCH, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  519. X      20, 200, 0, MS_SILENT, MZ_SMALL,
  520. X      M1_NOEYES | M1_NOLIMBS | M1_POIS_RES,
  521. X      M2_WANDER | M2_HOSTILE, C(WHITE) },
  522. X    { "gelatinous cube", S_BLOB, 6, 6, 8, 0, 0, (G_GENO | 2),
  523. X      { { AT_TUCH, AD_PLYS, 2, 4 }, { AT_NONE, AD_PLYS, 1, 4 },
  524. X        NO_ATTK, NO_ATTK, NO_ATTK },
  525. X      30, 300, 0, MS_SILENT, MZ_LARGE,
  526. X      M1_NOEYES | M1_NOLIMBS | M1_FIRE_RES | M1_COLD_RES | M1_ELEC_RES |
  527. X      M1_SLEE_RES, M2_WANDER | M2_HOSTILE | M2_OMNIVORE, C(CYAN) },
  528. X/*    cockatrice    */
  529. X    { "cockatrice", S_COCKATRICE, 5, 6, 6, 30, 0, (G_GENO | 5),
  530. X      { { AT_BITE, AD_PHYS, 1, 3 }, { AT_TUCH, AD_STON, 0, 0 },
  531. X        { AT_NONE, AD_STON, 0, 0 }, NO_ATTK, NO_ATTK },
  532. X      3, 30, 0, MS_HISS, MZ_SMALL,
  533. X      M1_ANIMAL | M1_NOHANDS | M1_POIS_RES | M1_STON_RES,
  534. X      M2_HOSTILE | M2_EGGS, C(YELLOW) },
  535. X/*    dog    */
  536. X    { "little dog", S_DOG, 2, 18, 6, 0, 0, (G_GENO | 1),
  537. X      { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  538. X      15, 150, 0, MS_BARK, MZ_SMALL,
  539. X      M1_ANIMAL | M1_NOHANDS, M2_CARNIVORE | M2_DOMESTIC, C(HI_DOMESTIC) },
  540. X    { "dog", S_DOG, 4, 16, 5, 0, 0, (G_GENO | 1),
  541. X      { { AT_BITE, AD_PHYS, 1 ,6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  542. X      20, 200, 0, MS_BARK, MZ_MEDIUM,
  543. X      M1_ANIMAL | M1_NOHANDS, M2_CARNIVORE | M2_DOMESTIC, C(HI_DOMESTIC) },
  544. X    { "large dog", S_DOG, 6, 15, 4, 0, 0, (G_GENO | 1),
  545. X      { { AT_BITE, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  546. X      25, 250, 0, MS_BARK, MZ_MEDIUM,
  547. X      M1_ANIMAL | M1_NOHANDS, M2_STRONG | M2_CARNIVORE | M2_DOMESTIC,
  548. X      C(HI_DOMESTIC) },
  549. X    { "jackal", S_DOG, 0, 12, 7, 0, 0, (G_GENO | G_SGROUP | 3),
  550. X      { { AT_BITE, AD_PHYS, 1, 2 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  551. X      25, 250, 0, MS_BARK, MZ_SMALL,
  552. X      M1_ANIMAL | M1_NOHANDS, M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
  553. X    { "jackalwere", S_DOG, 2, 12, 7, 10, -7, G_NOGEN | G_NOCORPSE,
  554. X      { { AT_BITE, AD_WERE, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  555. X      25, 250, 0, MS_BARK, MZ_SMALL,
  556. X      M1_NOPOLY | M1_NOHANDS | M1_POIS | M1_REGEN,
  557. X      M2_WERE | M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
  558. X    { "wolf", S_DOG, 5, 12, 4, 0, 0, (G_GENO | G_SGROUP | 2),
  559. X      { { AT_BITE, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  560. X      25, 250, 0, MS_BARK, MZ_SMALL,
  561. X      M1_ANIMAL | M1_NOHANDS, M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
  562. X    { "wolfwere", S_DOG, 5, 12, 4, 20, -7, G_NOGEN | G_NOCORPSE,
  563. X      { { AT_BITE, AD_WERE, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  564. X      25, 250, 0, MS_BARK, MZ_MEDIUM,
  565. X      M1_NOPOLY | M1_NOHANDS | M1_POIS | M1_REGEN,
  566. X      M2_WERE | M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
  567. X    { "winter wolf", S_DOG, 7, 12, 4, 0, 0, (G_GENO | 1),
  568. X      { { AT_BITE, AD_PHYS, 2, 6 }, { AT_BREA, AD_COLD, 2, 6 },
  569. X      NO_ATTK, NO_ATTK, NO_ATTK, },
  570. X      30, 300, 0, MS_BARK, MZ_LARGE, M1_ANIMAL | M1_NOHANDS | M1_COLD_RES,
  571. X      M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(CYAN) },
  572. X    { "warg", S_DOG, 7, 12, 4, 0, -5, (G_GENO | G_SGROUP | 2),
  573. X      { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  574. X      35, 350, 0, MS_BARK, MZ_MEDIUM, M1_ANIMAL | M1_NOHANDS,
  575. X      M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
  576. X    { "hell hound pup", S_DOG, 7, 12, 4, 20, -5,
  577. X      (G_HELL | G_GENO | G_SGROUP | 1),
  578. X      { { AT_BITE, AD_PHYS, 2, 6 }, { AT_BREA, AD_FIRE, 2, 6 },
  579. X      NO_ATTK, NO_ATTK, NO_ATTK },
  580. X      20, 200, 0, MS_BARK, MZ_SMALL, M1_ANIMAL | M1_NOHANDS | M1_FIRE_RES,
  581. X      M2_HOSTILE | M2_CARNIVORE, C(RED) },
  582. X    { "hell hound", S_DOG, 12, 14, 2, 20, 0, (G_HELL | G_GENO | 1),
  583. X      { { AT_BITE, AD_PHYS, 3, 6 }, { AT_BREA, AD_FIRE, 3, 6 },
  584. X      NO_ATTK, NO_ATTK, NO_ATTK, },
  585. X      30, 300, 0, MS_BARK, MZ_MEDIUM, M1_ANIMAL | M1_NOHANDS | M1_FIRE_RES,
  586. X      M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(RED) },
  587. X#ifdef CHARON
  588. X    { "Cerberus", S_DOG, 12, 10, 2, 20, -7, (G_HELL | G_UNIQ | 1),
  589. X      { { AT_BITE, AD_PHYS, 3, 6 }, { AT_BITE, AD_PHYS, 3, 6 },
  590. X      { AT_BITE, AD_PHYS, 3, 6 }, NO_ATTK, NO_ATTK },
  591. X      50, 350, 0, MS_BARK, MZ_LARGE,
  592. X      M1_NOPOLY | M1_ANIMAL | M1_NOHANDS | M1_FIRE_RES,
  593. X      M2_HOSTILE | M2_STRONG | M2_CARNIVORE | M2_PNAME, C(RED) },
  594. X#endif
  595. X/*    eyes    */
  596. X    { "floating eye", S_EYE, 2, 1, 9, 10, 0, (G_GENO | 5),
  597. X      { { AT_NONE, AD_PLYS, 0, 70 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  598. X      1, 10, 0, MS_SILENT, MZ_SMALL,
  599. X      M1_FLY | M1_NOLIMBS, M2_HOSTILE, C(BLUE) },
  600. X    { "freezing sphere", S_EYE, 6, 13, 4, 0, 0, (G_GENO | 2),
  601. X      { { AT_EXPL, AD_COLD, 4, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  602. X      1, 10, 0, MS_SILENT, MZ_SMALL,
  603. X      M1_FLY | M1_NOLIMBS | M1_COLD_RES, M2_HOSTILE, C(WHITE) },
  604. X/*    felines     */
  605. X    { "kitten", S_FELINE, 2, 18, 6, 0, 0, (G_GENO | 1),
  606. X      { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  607. X      15, 150, 0, MS_MEW, MZ_SMALL, M1_ANIMAL | M1_NOHANDS,
  608. X      M2_WANDER | M2_CARNIVORE | M2_DOMESTIC, C(HI_DOMESTIC) },
  609. X    { "housecat", S_FELINE, 4, 16, 5, 0, 0, (G_GENO | 1),
  610. X      { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  611. X      20, 200, 0, MS_MEW, MZ_SMALL, M1_ANIMAL | M1_NOHANDS,
  612. X      M2_CARNIVORE | M2_DOMESTIC, C(HI_DOMESTIC) },
  613. X    { "large cat", S_FELINE, 6, 15, 4, 0, 0, (G_GENO | 1),
  614. X      { { AT_BITE, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  615. X      25, 250, 0, MS_MEW, MZ_SMALL, M1_ANIMAL | M1_NOHANDS,
  616. X      M2_STRONG | M2_CARNIVORE | M2_DOMESTIC, C(HI_DOMESTIC) },
  617. X    { "jaguar", S_FELINE, 4, 15, 6, 0, 0, (G_GENO | 2),
  618. X      { { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 },
  619. X        { AT_BITE, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK },
  620. X      30, 300, 0, MS_GROWL, MZ_LARGE, M1_ANIMAL | M1_NOHANDS,
  621. X      M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
  622. X    { "tiger", S_FELINE, 6, 12, 6, 0, 0, (G_GENO | 2),
  623. X      { { AT_CLAW, AD_PHYS, 2, 4 }, { AT_CLAW, AD_PHYS, 2, 4 },
  624. X        { AT_BITE, AD_PHYS, 1, 10 }, NO_ATTK, NO_ATTK },
  625. X      30, 300, 0, MS_GROWL, MZ_LARGE, M1_ANIMAL | M1_NOHANDS,
  626. X      M2_HOSTILE | M2_CARNIVORE, C(YELLOW) },
  627. X/*    gremlins    */
  628. X    { "gremlin", S_GREMLIN, 5, 12, 2, 25, -9, (G_GENO | 2),
  629. X      { { AT_CLAW, AD_PHYS, 1, 6 }, { AT_CLAW, AD_PHYS, 1, 6 },
  630. X        { AT_BITE, AD_PHYS, 1, 4 }, { AT_CLAW, AD_CURS, 0, 0 }, NO_ATTK },
  631. X      10, 30, 0, MS_LAUGH, MZ_SMALL,
  632. X      M1_SWIM | M1_HUMANOID | M1_POIS, M2_STALK, C(GREEN) },
  633. X/*    humanoids    */
  634. X#ifdef TOLKIEN
  635. X    { "hobbit", S_HUMANOID, 1, 9, 7, 0, 6, (G_GENO | 2),
  636. X      { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  637. X      20, 200, 0, MS_HUMANOID, MZ_SMALL,
  638. X      M1_HUMANOID | M1_COLLECT, 0, C(GREEN) },
  639. X#endif
  640. X    { "bugbear", S_HUMANOID, 3, 9, 5, 0, -6, (G_GENO | 1),
  641. X      { { AT_WEAP, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  642. X      25, 250, 0, MS_GROWL, MZ_LARGE, M1_HUMANOID | M1_COLLECT,
  643. X      M2_STRONG, C(BROWN) },
  644. X    { "dwarf", S_HUMANOID,    2, 6, 4, 10, 4, (G_GENO | 3),
  645. X      { { AT_WEAP, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  646. X      30, 300, 0, MS_HUMANOID, MZ_HUMAN,
  647. X      M1_TUNNEL | M1_NEEDPICK | M1_HUMANOID | M1_GREEDY | M1_JEWELS |
  648. X      M1_COLLECT, M2_DWARF | M2_STRONG, C(RED) },
  649. X    { "dwarf lord", S_HUMANOID,  4, 6, 4, 10, 5, (G_GENO | 2),
  650. X      { { AT_WEAP, AD_PHYS, 2, 4 }, { AT_WEAP, AD_PHYS, 2, 4 },
  651. X        NO_ATTK, NO_ATTK, NO_ATTK }, 30, 300, 0, MS_HUMANOID, MZ_HUMAN,
  652. X      M1_TUNNEL | M1_NEEDPICK | M1_HUMANOID | M1_GREEDY | M1_JEWELS |
  653. X      M1_COLLECT, M2_DWARF | M2_STRONG | M2_LORD, C(BLUE) },
  654. X    { "dwarf king", S_HUMANOID,  6, 6, 4, 20, 6, (G_GENO | 1),
  655. X      { { AT_WEAP, AD_PHYS, 2, 6 }, { AT_WEAP, AD_PHYS, 2, 6 },
  656. X        NO_ATTK, NO_ATTK, NO_ATTK }, 30, 300, 0, MS_HUMANOID, MZ_HUMAN,
  657. X      M1_TUNNEL | M1_NEEDPICK | M1_HUMANOID | M1_GREEDY | M1_JEWELS |
  658. X      M1_COLLECT, M2_DWARF | M2_STRONG | M2_PRINCE, C(HI_LORD) },
  659. X/*    imps & other minor demons/devils */
  660. X    { "manes", S_IMP, 1, 3, 7, 0, -7, (G_GENO | G_LGROUP | G_NOCORPSE | 1),
  661. X      { { AT_CLAW, AD_PHYS, 1, 3 }, { AT_CLAW, AD_PHYS, 1, 3 },
  662. X        { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK },
  663. X      10, 100, 0, MS_CUSS, MZ_SMALL, M1_POIS, M2_STALK, C(RED) },
  664. X    { "homunculus", S_IMP, 2, 12, 6, 10, -7, (G_GENO | 2),
  665. X      { { AT_BITE, AD_SLEE, 1, 3 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  666. X      20, 200, 0, MS_SILENT, MZ_TINY,
  667. X      M1_FLY | M1_POIS | M1_POIS_RES | M1_SLEE_RES, M2_STALK, C(GREEN) },
  668. X    { "lemure", S_IMP, 3, 3, 7, 0, -7,
  669. X      (G_HELL | G_GENO | G_LGROUP | G_NOCORPSE | 1),
  670. X      { { AT_CLAW, AD_PHYS, 1, 3 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  671. X      10, 100, 0, MS_SILENT, MZ_MEDIUM, M1_POIS | M1_SLEE_RES | M1_REGEN,
  672. X      M2_HOSTILE | M2_WANDER | M2_STALK, C(BROWN) },
  673. X    { "imp", S_IMP, 3, 12, 2, 20, -7, (G_GENO | 1),
  674. X      { { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  675. X      1, 10, 0, MS_CUSS, MZ_TINY, M1_REGEN, M2_WANDER | M2_STALK, C(RED) },
  676. X    { "quasit", S_IMP, 3, 15, 2, 20, -7, (G_GENO | 2),
  677. X      { { AT_CLAW, AD_DRDX, 1, 2 }, { AT_CLAW, AD_DRDX, 1, 2 },
  678. X        { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK },
  679. X      20, 200, 0, MS_SILENT, MZ_SMALL,
  680. X      M1_POIS_RES | M1_REGEN, M2_STALK, C(BLUE) },
  681. X    { "tengu", S_IMP, 6, 13, 5, 30, 7, (G_GENO | 3),
  682. X      { { AT_BITE, AD_PHYS, 1, 7 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  683. X      30, 300, 0, MS_SQAWK, MZ_SMALL,
  684. X      M1_POIS_RES | M1_TPORT | M1_TPORT_CONTROL, M2_STALK, C(CYAN) },
  685. X/*    jellies     */
  686. X    { "blue jelly", S_JELLY, 4, 0, 8, 10, 0, (G_GENO | 2),
  687. X      { { AT_NONE, AD_COLD, 0, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  688. X      2, 20, 0, MS_SILENT, MZ_MEDIUM,
  689. X      M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_COLD_RES | M1_POIS_RES,
  690. X      M2_HOSTILE | M2_OMNIVORE, C(BLUE) },
  691. X    { "spotted jelly", S_JELLY, 5, 0, 8, 10, 0, (G_GENO | 1),
  692. X      { { AT_NONE, AD_ACID, 0, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  693. X      2, 20, 0, MS_SILENT, MZ_MEDIUM,
  694. X      M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_STON_RES | M1_ACID,
  695. X      M2_HOSTILE | M2_OMNIVORE, C(GREEN) },
  696. X    { "ochre jelly", S_JELLY, 6, 3, 8, 20, 0, (G_GENO | 2),
  697. X      { { AT_ENGL, AD_ACID, 3, 6 }, { AT_NONE, AD_ACID, 0, 6 },
  698. X        NO_ATTK, NO_ATTK, NO_ATTK },
  699. X      2, 20, 0, MS_SILENT, MZ_MEDIUM,
  700. X      M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_STON_RES | M1_ACID,
  701. X      M2_HOSTILE | M2_OMNIVORE, C(BROWN) },
  702. X/*    kobolds     */
  703. X    { "kobold", S_KOBOLD,  0, 6, 7, 0, -2, (G_GENO | 1),
  704. X      { { AT_WEAP, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  705. X      10, 100, 0, MS_ORC, MZ_SMALL, M1_HUMANOID | M1_POIS | M1_COLLECT,
  706. X      M2_HOSTILE, C(BROWN) },
  707. X    { "large kobold", S_KOBOLD,  1, 6, 6, 0, -3, (G_GENO | 1),
  708. X      { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  709. X      15, 150, 0, MS_ORC, MZ_SMALL, M1_HUMANOID | M1_POIS | M1_COLLECT,
  710. X      M2_HOSTILE, C(RED) },
  711. X    { "kobold lord", S_KOBOLD,  2, 6, 5, 0, -4, (G_GENO | 1),
  712. X      { { AT_WEAP, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  713. X      20, 200, 0, MS_ORC, MZ_SMALL, M1_HUMANOID | M1_POIS | M1_COLLECT,
  714. X      M2_HOSTILE | M2_LORD, C(HI_LORD) },
  715. X    { "kobold shaman", S_KOBOLD, 1, 6, 6, 10, -4, (G_GENO | 1),
  716. X      { { AT_MAGC, AD_SPEL, 0, 0 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  717. X      15, 150, 0, MS_ORC, MZ_SMALL, M1_HUMANOID | M1_POIS | M1_MAGIC,
  718. X      M2_HOSTILE, C(HI_ZAP) },
  719. X/*    leprechauns    */
  720. X    { "leprechaun", S_LEPRECHAUN, 5, 15, 8, 20, 0, (G_GENO | 4),
  721. X      { { AT_CLAW, AD_SGLD, 1, 2 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  722. X      30, 300, 0, MS_LAUGH, MZ_TINY, M1_HUMANOID | M1_TPORT | M1_GREEDY,
  723. X      M2_HOSTILE, C(GREEN) },
  724. X/*    mimics    */
  725. X    { "small mimic", S_MIMIC, 7, 3, 7, 0, 0, (G_GENO | 2),
  726. X      { { AT_CLAW, AD_PHYS, 3, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  727. X      20, 200, 0, MS_SILENT, MZ_MEDIUM,
  728. X      M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS,
  729. X      M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
  730. X    { "large mimic", S_MIMIC, 8, 3, 7, 10, 0, (G_GENO | 1),
  731. X      { { AT_CLAW, AD_STCK, 3, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  732. X      40, 400, 0, MS_SILENT, MZ_LARGE,
  733. X      M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS,
  734. X      M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(RED) },
  735. X    { "giant mimic", S_MIMIC, 9, 3, 7, 20, 0, (G_GENO | 1),
  736. X      { { AT_CLAW, AD_STCK, 3, 6 }, { AT_CLAW, AD_STCK, 3, 6 },
  737. X        NO_ATTK, NO_ATTK, NO_ATTK },
  738. X      60, 500, 0, MS_SILENT, MZ_LARGE,
  739. X      M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS,
  740. X      M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(HI_LORD) },
  741. X/*    nymphs    */
  742. X    { "wood nymph", S_NYMPH, 3, 12, 9, 20, 0, (G_GENO | 2),
  743. X      { { AT_CLAW, AD_SITM, 0, 0 }, { AT_CLAW, AD_SEDU, 0, 0 },
  744. X        NO_ATTK, NO_ATTK, NO_ATTK }, 30, 300, 0, MS_SEDUCE, MZ_HUMAN,
  745. X      M1_HUMANOID | M1_TPORT | M1_COLLECT, M2_HOSTILE | M2_FEM, C(GREEN) },
  746. X    { "water nymph", S_NYMPH, 3, 12, 9, 20, 0, (G_GENO | 2),
  747. X      { { AT_CLAW, AD_SITM, 0, 0 }, { AT_CLAW, AD_SEDU, 0, 0 },
  748. X        NO_ATTK, NO_ATTK, NO_ATTK }, 30, 300, 0, MS_SEDUCE, MZ_HUMAN,
  749. X      M1_HUMANOID | M1_TPORT | M1_COLLECT | M1_SWIM,
  750. X      M2_HOSTILE | M2_FEM, C(BLUE) },
  751. X    { "mountain nymph", S_NYMPH, 3, 12, 9, 20, 0, (G_GENO | 2),
  752. X      { { AT_CLAW, AD_SITM, 0, 0 }, { AT_CLAW, AD_SEDU, 0, 0 },
  753. X        NO_ATTK, NO_ATTK, NO_ATTK }, 30, 300, 0, MS_SEDUCE, MZ_HUMAN,
  754. X      M1_HUMANOID | M1_TPORT | M1_COLLECT, M2_HOSTILE | M2_FEM, C(BROWN) },
  755. X/*    orcs    */
  756. X    { "goblin", S_ORC,  0, 6, 6, 0, -3, (G_GENO | 2),
  757. X      { { AT_WEAP, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  758. X      10, 100, 0, MS_ORC, MZ_SMALL,
  759. X      M1_HUMANOID | M1_COLLECT, M2_ORC, C(GRAY) },
  760. X    { "hobgoblin", S_ORC,  1, 9, 6, 0, -4, (G_GENO | 2),
  761. X      { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  762. X      20, 200, 0, MS_ORC, MZ_HUMAN,
  763. X      M1_HUMANOID | M1_COLLECT, M2_ORC | M2_STRONG, C(BROWN) },
  764. X    /* "orc" for zombie corpses only; they don't get created at random */
  765. X    { "orc", S_ORC,  1, 9, 6, 0, -3, (G_GENO | G_NOGEN | G_LGROUP),
  766. X      { { AT_WEAP, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  767. X      15, 150, 0, MS_ORC, MZ_HUMAN,
  768. X      M1_HUMANOID | M1_GREEDY | M1_JEWELS | M1_COLLECT,
  769. X      M2_ORC | M2_HOSTILE | M2_STRONG, C(RED) },
  770. X    { "hill orc", S_ORC, 2, 9, 6, 0, -4, (G_GENO | G_LGROUP | 2),
  771. X      { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  772. X      20, 200, 0, MS_ORC, MZ_HUMAN,
  773. X      M1_HUMANOID | M1_GREEDY | M1_JEWELS | M1_COLLECT,
  774. X      M2_ORC | M2_HOSTILE | M2_STRONG, C(YELLOW) },
  775. X#ifdef TOLKIEN
  776. X    { "Mordor orc", S_ORC, 3, 5, 6, 0, -5, (G_GENO | G_LGROUP | 1),
  777. X      { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  778. X      20, 200, 0, MS_ORC, MZ_HUMAN,
  779. X      M1_HUMANOID | M1_GREEDY | M1_JEWELS | M1_COLLECT,
  780. X      M2_ORC | M2_HOSTILE | M2_STRONG, C(BLUE) },
  781. X    { "Uruk-hai", S_ORC, 3, 7, 5, 0, -4, (G_GENO | G_LGROUP | 1),
  782. X      { { AT_WEAP, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  783. X      30, 300, 0, MS_ORC, MZ_HUMAN,
  784. X      M1_HUMANOID | M1_GREEDY | M1_JEWELS | M1_COLLECT,
  785. X      M2_ORC | M2_HOSTILE | M2_STRONG, C(BLACK) },
  786. X#endif
  787. X    { "orc shaman", S_ORC, 3, 9, 5, 10, -5, (G_GENO | 1),
  788. X      { { AT_MAGC, AD_SPEL, 0, 0 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  789. X      30, 300, 0, MS_ORC, MZ_HUMAN,
  790. X      M1_HUMANOID | M1_GREEDY | M1_JEWELS | M1_MAGIC,
  791. X      M2_ORC | M2_HOSTILE | M2_STRONG, C(HI_ZAP) },
  792. X    { "orc-captain", S_ORC, 5, 5, 4, 0, -5, (G_GENO | 1),
  793. X      { { AT_WEAP, AD_PHYS, 2, 4 }, { AT_WEAP, AD_PHYS, 2, 4 },
  794. X        NO_ATTK, NO_ATTK, NO_ATTK },
  795. X      35, 350, 0, MS_ORC, MZ_HUMAN,
  796. X      M1_HUMANOID | M1_GREEDY | M1_JEWELS | M1_COLLECT,
  797. X      M2_ORC | M2_HOSTILE | M2_STRONG, C(HI_LORD) },
  798. X/*     piercers    */
  799. X    { "rock piercer", S_PIERCER, 3, 1, 3, 0, 0, (G_GENO | 2),
  800. X      { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  801. X      20, 200, 0, MS_SILENT, MZ_SMALL,
  802. X      M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS,
  803. X      M2_HOSTILE | M2_CARNIVORE, C(GRAY) },
  804. X    { "iron piercer", S_PIERCER, 5, 1, 0, 0, 0, (G_GENO | 1),
  805. X      { { AT_BITE, AD_PHYS, 3, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  806. X      40, 300, 0, MS_SILENT, MZ_MEDIUM,
  807. X      M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS,
  808. X      M2_HOSTILE | M2_CARNIVORE, C(CYAN) },
  809. X/*    quadrupeds (generic)    */
  810. X    { "rothe", S_QUADRUPED, 2, 9, 7, 0, 0, (G_GENO | G_SGROUP | 4),
  811. X      { { AT_CLAW, AD_PHYS, 1, 3 }, { AT_BITE, AD_PHYS, 1, 3 },
  812. X        { AT_BITE, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK },
  813. X      10, 100, 0, MS_SILENT, MZ_LARGE, M1_ANIMAL | M1_NOHANDS,
  814. X      M2_HOSTILE | M2_CARNIVORE, C(GRAY) },
  815. X#ifdef TOLKIEN
  816. X    { "mumakil", S_QUADRUPED, 5, 9, 0, 0, -2, (G_GENO | 1),
  817. X      { { AT_BUTT, AD_PHYS, 4, 12 }, { AT_BITE, AD_PHYS, 2, 6 },
  818. X        NO_ATTK, NO_ATTK, NO_ATTK },
  819. X      70, 500, 0, MS_SILENT, MZ_LARGE,
  820. X      M1_ANIMAL | M1_THICK_HIDE | M1_NOHANDS,
  821. X      M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(GRAY) },
  822. X#endif
  823. X    { "leocrotta", S_QUADRUPED, 6, 18, 4, 10, 0, (G_GENO | 2),
  824. X      { { AT_CLAW, AD_PHYS, 2, 6 }, { AT_BITE, AD_PHYS, 2, 6 },
  825. X        { AT_CLAW, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK },
  826. X      50, 500, 0, MS_IMITATE, MZ_LARGE, M1_ANIMAL | M1_NOHANDS,
  827. X      M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(RED) },
  828. X    { "wumpus", S_QUADRUPED, 8, 3, 2, 10, 0, (G_GENO | 1),
  829. X      { { AT_BITE, AD_PHYS, 3, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  830. X      50, 500, 0, MS_SILENT, MZ_LARGE, M1_ANIMAL | M1_NOHANDS,
  831. X      M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(CYAN) },
  832. X    { "titanothere", S_QUADRUPED, 12, 12, 6, 0, 0, (G_GENO | 2),
  833. X      { { AT_CLAW, AD_PHYS, 2, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  834. X      65, 650, 0, MS_SILENT, MZ_LARGE,
  835. X      M1_ANIMAL | M1_THICK_HIDE | M1_NOHANDS,
  836. X      M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(GRAY) },
  837. X    { "baluchitherium", S_QUADRUPED, 14, 12, 5, 0, 0, (G_GENO | 2),
  838. X      { { AT_CLAW, AD_PHYS, 5, 4 }, { AT_CLAW, AD_PHYS, 5, 4 },
  839. X        NO_ATTK, NO_ATTK, NO_ATTK },
  840. X      80, 800, 0, MS_SILENT, MZ_LARGE,
  841. X      M1_ANIMAL | M1_THICK_HIDE | M1_NOHANDS,
  842. X      M2_HOSTILE | M2_STRONG | M2_HERBIVORE, C(GRAY) },
  843. X/*    rodents     */
  844. X    { "sewer rat",    S_RODENT, 0, 12, 7, 0, 0, (G_GENO | G_SGROUP | 1),
  845. X      { { AT_BITE, AD_PHYS, 1, 3 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  846. X      2, 20, 0, MS_SQEEK, MZ_TINY, M1_ANIMAL | M1_NOHANDS,
  847. X      M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
  848. X    { "giant rat",    S_RODENT, 1, 10, 7, 0, 0, (G_GENO | G_SGROUP | 2),
  849. X      { { AT_BITE, AD_PHYS, 1, 3 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  850. X      3, 30, 0, MS_SQEEK, MZ_TINY, M1_ANIMAL | M1_NOHANDS,
  851. X      M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
  852. X    { "rabid rat", S_RODENT, 2, 12, 6, 0, 0, (G_GENO | 1),
  853. X      { { AT_BITE, AD_DRCO, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  854. X      3, 10, 0, MS_SQEEK, MZ_TINY, M1_ANIMAL | M1_NOHANDS | M1_POIS,
  855. X      M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
  856. X    { "ratwere", S_RODENT, 2, 12, 6, 10, -7, G_NOGEN | G_NOCORPSE,
  857. X      { { AT_BITE, AD_WERE, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  858. X      3, 30, 0, MS_SQEEK, MZ_TINY, M1_NOHANDS | M1_NOPOLY |
  859. X      M1_POIS | M1_REGEN, M2_WERE | M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
  860. X    { "rock mole", S_RODENT, 3, 3, 0, 20, 0, (G_GENO | 2),
  861. X      { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  862. X      3, 30, 0, MS_SILENT, MZ_SMALL,
  863. X      M1_TUNNEL | M1_ANIMAL | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
  864. X      M1_COLLECT, M2_HOSTILE | M2_METALLIVORE, C(GRAY) },
  865. X/*    spiders and scorpions    */
  866. X    { "cave spider", S_SPIDER, 1, 12, 3, 0, 0, (G_GENO | G_SGROUP | 2),
  867. X      { { AT_BITE, AD_PHYS, 1, 2 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  868. X      5, 50, 0, MS_SILENT, MZ_TINY,
  869. X      M1_CONCEAL | M1_ANIMAL | M1_NOHANDS | M1_POIS_RES,
  870. X      M2_HOSTILE | M2_CARNIVORE | M2_EGGS, C(GRAY) },
  871. X    { "scorpion", S_SPIDER, 5, 15, 3, 0, 0, (G_GENO | 2),
  872. X      { { AT_CLAW, AD_PHYS, 1, 2 }, { AT_CLAW, AD_PHYS, 1, 2 },
  873. X        { AT_STNG, AD_DRST, 1, 4 }, NO_ATTK, NO_ATTK },
  874. X      10, 100, 0, MS_SILENT, MZ_SMALL,
  875. X      M1_CONCEAL | M1_ANIMAL | M1_NOHANDS | M1_POIS,
  876. X      M2_HOSTILE | M2_CARNIVORE | M2_EGGS, C(RED) },
  877. X    { "giant spider", S_SPIDER, 5, 15, 4, 0, 0, (G_GENO | 1),
  878. X      { { AT_BITE, AD_DRST, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  879. X      10, 100, 0, MS_SILENT, MZ_LARGE,
  880. X      M1_ANIMAL | M1_NOHANDS | M1_POIS | M1_POIS_RES,
  881. X      M2_HOSTILE | M2_STRONG | M2_CARNIVORE | M2_EGGS, C(MAGENTA) },
  882. X/*    trappers, lurkers, &c.    */
  883. X    { "lurker above", S_TRAPPER, 10, 3, 3, 0, 0, (G_GENO | 2),
  884. X      { { AT_ENGL, AD_DGST, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  885. X      40, 350, 0, MS_SILENT, MZ_HUGE,
  886. X      M1_HIDE | M1_FLY | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS,
  887. X      M2_HOSTILE | M2_STALK | M2_STRONG | M2_CARNIVORE, C(GRAY) },
  888. X    { "trapper", S_TRAPPER, 12, 3, 3, 0, 0, (G_GENO | 2),
  889. X      { { AT_ENGL, AD_DGST, 1, 10 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  890. X      40, 350, 0, MS_SILENT, MZ_HUGE,
  891. X      M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS,
  892. X      M2_HOSTILE | M2_STALK | M2_STRONG | M2_CARNIVORE, C(GREEN) },
  893. X/*    unicorns    */
  894. X    { "white unicorn", S_UNICORN, 4, 24, 2, 70, 7, (G_GENO | 2),
  895. X      { { AT_BUTT, AD_PHYS, 1, 12 }, { AT_KICK, AD_PHYS, 1, 6 },
  896. X        NO_ATTK, NO_ATTK, NO_ATTK },
  897. X      30, 300, 0, MS_NEIGH, MZ_LARGE, M1_NOHANDS | M1_POIS_RES | M1_JEWELS,
  898. X      M2_WANDER | M2_STRONG | M2_HERBIVORE, C(WHITE) },
  899. X    { "gray unicorn", S_UNICORN, 4, 24, 2, 70, 0, (G_GENO | 1),
  900. X      { { AT_BUTT, AD_PHYS, 1, 12 }, { AT_KICK, AD_PHYS, 1, 6 },
  901. X        NO_ATTK, NO_ATTK, NO_ATTK },
  902. X      30, 300, 0, MS_NEIGH, MZ_LARGE, M1_NOHANDS | M1_POIS_RES | M1_JEWELS,
  903. X      M2_WANDER | M2_STRONG | M2_HERBIVORE, C(GRAY) },
  904. X    { "black unicorn", S_UNICORN, 4, 24, 2, 70, -7, (G_GENO | 1),
  905. X      { { AT_BUTT, AD_PHYS, 1, 12 }, { AT_KICK, AD_PHYS, 1, 6 },
  906. X        NO_ATTK, NO_ATTK, NO_ATTK },
  907. X      30, 300, 0, MS_NEIGH, MZ_LARGE, M1_NOHANDS | M1_POIS_RES | M1_JEWELS,
  908. X      M2_WANDER | M2_STRONG | M2_HERBIVORE, C(BLACK) },
  909. X/*    vortices    */
  910. X    { "fog cloud",    S_VORTEX, 3,  1, 0, 0, 0, (G_GENO | G_NOCORPSE | 2),
  911. X      { { AT_ENGL, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  912. X      10, 0, 0, MS_SILENT, MZ_HUGE,
  913. X      M1_FLY | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES,
  914. X      M2_HOSTILE, C(GRAY) },
  915. X    { "dust vortex", S_VORTEX, 4, 20, 2, 30, 0, (G_GENO | G_NOCORPSE | 2),
  916. X      { { AT_ENGL, AD_BLND, 2, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  917. X      20, 0, 0, MS_SILENT, MZ_HUGE,
  918. X      M1_FLY | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES, M2_HOSTILE, C(BROWN) },
  919. X    { "energy vortex", S_VORTEX, 6, 20, 2, 30, 0, (G_GENO | G_NOCORPSE | 1),
  920. X      { { AT_ENGL, AD_ELEC, 1, 6 }, { AT_ENGL, AD_DREN, 0, 0 },
  921. X        { AT_NONE, AD_ELEC, 0, 4 }, NO_ATTK, NO_ATTK },
  922. X      20, 0, 0, MS_SILENT, MZ_HUGE,
  923. X      M1_FLY | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES | M1_ELEC_RES,
  924. X      M2_HOSTILE, C(HI_ZAP) },
  925. X    { "ice vortex", S_VORTEX, 5, 20, 2, 30, 0, (G_GENO | G_NOCORPSE | 1),
  926. X      { { AT_ENGL, AD_COLD, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  927. X      30, 0, 0, MS_SILENT, MZ_HUGE,
  928. X      M1_FLY | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES | M1_COLD_RES,
  929. X      M2_HOSTILE, C(CYAN) },
  930. X    { "steam vortex", S_VORTEX, 7, 22, 2, 30, 0,
  931. X      (G_HELL | G_GENO | G_NOCORPSE | 2),
  932. X      { { AT_ENGL, AD_FIRE, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  933. X      30, 0, 0, MS_SILENT, MZ_HUGE,
  934. X      M1_FLY | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES | M1_FIRE_RES,
  935. X      M2_HOSTILE, C(BLUE) },
  936. X    { "fire vortex", S_VORTEX, 8, 22, 2, 30, 0,
  937. X      (G_HELL | G_GENO | G_NOCORPSE | 1),
  938. X      { { AT_ENGL, AD_FIRE, 1, 10 }, { AT_NONE, AD_FIRE, 0, 4 },
  939. X        NO_ATTK, NO_ATTK, NO_ATTK },
  940. X      30, 0, 0, MS_SILENT, MZ_HUGE,
  941. X      M1_FLY | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES | M1_FIRE_RES,
  942. X      M2_HOSTILE, C(YELLOW) },
  943. X/*    worms    */
  944. X#ifdef WORM
  945. X    { "baby long worm", S_WORM, 8, 3, 5, 0, 0, G_GENO,
  946. X      { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  947. X      25, 250, 0, MS_SILENT, MZ_LARGE, M1_ANIMAL | M1_SLITHY | M1_NOLIMBS,
  948. X      M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
  949. X#endif
  950. X    { "baby purple worm", S_WORM, 8, 3, 5, 0, 0, G_GENO,
  951. X      { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  952. X      25, 250, 0, MS_SILENT, MZ_LARGE, M1_ANIMAL | M1_SLITHY | M1_NOLIMBS,
  953. X      M2_HOSTILE | M2_CARNIVORE, C(MAGENTA) },
  954. X#ifdef WORM
  955. X    { "long worm", S_WORM, 8, 3, 5, 10, 0, (G_GENO | 2),
  956. X      { { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  957. X      50, 500, 0, MS_SILENT, MZ_GIGANTIC,
  958. X      M1_ANIMAL | M1_SLITHY | M1_NOLIMBS | M1_NOPOLY,
  959. X      M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS,
  960. X      C(BROWN) },
  961. X#endif
  962. X    { "purple worm", S_WORM, 15, 9, 6, 20, 0, (G_GENO | 2),
  963. X      { { AT_BITE, AD_PHYS, 2, 8 }, { AT_ENGL, AD_DGST, 1, 10 },
  964. X        NO_ATTK, NO_ATTK, NO_ATTK }, 70, 700, 0, MS_SILENT, MZ_GIGANTIC,
  965. X      M1_ANIMAL | M1_SLITHY | M1_NOLIMBS,
  966. X      M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS,
  967. X      C(MAGENTA) },
  968. X/*    xan, &c.    */
  969. X    { "grid bug", S_XAN, 0, 12, 9, 0, 0,
  970. X      (G_GENO | G_SGROUP | G_NOCORPSE | 3),
  971. X      { { AT_BITE, AD_ELEC, 1, 1 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  972. X      5, 50, 0, MS_BUZZ, MZ_TINY, M1_ANIMAL | M1_ELEC_RES, M2_HOSTILE,
  973. X      C(MAGENTA) },
  974. X    { "xan", S_XAN, 7, 18, -4, 0, 0, (G_GENO | 3),
  975. X      { { AT_STNG, AD_LEGS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  976. X      30, 300, 0, MS_BUZZ, MZ_TINY, M1_FLY | M1_ANIMAL | M1_NOHANDS |
  977. X      M1_POIS | M1_POIS_RES, M2_HOSTILE, C(RED) },
  978. X/*    yellow light    */
  979. X    { "yellow light", S_YLIGHT,  3, 15, 0, 0, 0, (G_GENO | 4),
  980. X      { { AT_EXPL, AD_BLND, 10, 20 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  981. X      1, 10, 0, MS_SILENT, MZ_SMALL,
  982. X      M1_FLY | M1_NOLIMBS, M2_HOSTILE, C(BRIGHT|YELLOW) },
  983. X/*    zruty    */
  984. X    { "zruty", S_ZRUTY, 9, 8, 3, 0, 0, (G_GENO | 2),
  985. X      { { AT_CLAW, AD_PHYS, 3, 4 }, { AT_CLAW, AD_PHYS, 3, 4 },
  986. X        { AT_BITE, AD_PHYS, 3, 6 }, NO_ATTK, NO_ATTK },
  987. X      60, 600, 0, MS_SILENT, MZ_LARGE, M1_ANIMAL | M1_HUMANOID,
  988. X      M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(BROWN) },
  989. X/*    Apes    */
  990. X    { "ape", S_APE, 4, 12, 6, 0, 0, (G_GENO | G_SGROUP | 2),
  991. X      { { AT_CLAW, AD_PHYS, 1, 3 }, { AT_CLAW, AD_PHYS, 1, 3 },
  992. X        { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK },
  993. X      50, 500, 0, MS_GROWL, MZ_LARGE, M1_ANIMAL | M1_HUMANOID,
  994. X      M2_STRONG | M2_CARNIVORE, C(BROWN) },
  995. X    { "carnivorous ape", S_APE, 5, 12, 6, 0, 0, (G_GENO | 1),
  996. X      { { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 },
  997. X        { AT_HUGS, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK },
  998. X      55, 550, 0, MS_GROWL, MZ_LARGE, M1_ANIMAL | M1_HUMANOID,
  999. X      M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(BROWN) },
  1000. X/*    Bats    */
  1001. X    { "bat", S_BAT, 0, 22, 8, 0, 0, (G_GENO | G_SGROUP | 1),
  1002. X      { { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  1003. X      2, 20, 0, MS_SQEEK, MZ_TINY, M1_FLY | M1_ANIMAL | M1_NOHANDS,
  1004. X      M2_WANDER | M2_CARNIVORE, C(BROWN) },
  1005. X    { "giant bat", S_BAT, 2, 22, 7, 0, 0, (G_GENO | 2),
  1006. X      { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  1007. X      3, 30, 0, MS_SQEEK, MZ_MEDIUM, M1_FLY | M1_ANIMAL | M1_NOHANDS,
  1008. X      M2_WANDER | M2_HOSTILE | M2_CARNIVORE, C(RED) },
  1009. X    { "vampire bat", S_BAT, 5, 20, 6, 0, 0, (G_GENO | 2),
  1010. X      { { AT_BITE, AD_PHYS, 1, 6 }, { AT_BITE, AD_DRST, 0, 0 },
  1011. X        NO_ATTK, NO_ATTK, NO_ATTK },
  1012. X      3, 20, 0, MS_SQEEK, MZ_TINY,
  1013. X      M1_FLY | M1_ANIMAL | M1_NOHANDS | M1_POIS | M1_REGEN,
  1014. X      M2_UNDEAD | M2_HOSTILE, C(BLACK) },
  1015. X/*    Centaurs    */
  1016. X    { "plains centaur", S_CENTAUR, 4, 18, 4, 0, 0, (G_GENO | 1),
  1017. X      { { AT_WEAP, AD_PHYS, 1, 6 }, { AT_KICK, AD_PHYS, 1, 6 },
  1018. X        NO_ATTK, NO_ATTK, NO_ATTK},
  1019. X      50, 500, 0, MS_SILENT, MZ_LARGE, M1_COLLECT | M1_GREEDY, M2_STRONG,
  1020. X      C(BROWN)  },
  1021. X    { "forest centaur", S_CENTAUR, 5, 18, 3, 10, -1, (G_GENO | 1),
  1022. X      { { AT_WEAP, AD_PHYS, 1, 8 }, { AT_KICK, AD_PHYS, 1, 6 },
  1023. X        NO_ATTK, NO_ATTK, NO_ATTK},
  1024. X      55, 600, 0, MS_SILENT, MZ_LARGE, M1_COLLECT | M1_GREEDY, M2_STRONG,
  1025. X      C(GREEN)  },
  1026. X    { "mountain centaur", S_CENTAUR, 6, 20, 2, 10, -3, (G_GENO | 1),
  1027. X      { { AT_WEAP, AD_PHYS, 1, 10 }, { AT_KICK, AD_PHYS, 1, 6 },
  1028. X        { AT_KICK, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK },
  1029. X      55, 500, 0, MS_SILENT, MZ_LARGE, M1_COLLECT | M1_GREEDY, M2_STRONG,
  1030. X      C(CYAN) },
  1031. X/*    Dragons     */
  1032. X    { "baby gray dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
  1033. X      { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  1034. X      50, 500, 0, MS_ROAR, MZ_HUGE,
  1035. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS,
  1036. X      M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(GRAY) },
  1037. X    { "baby red dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
  1038. X      { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  1039. X      50, 500, 0, MS_ROAR, MZ_HUGE,
  1040. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
  1041. X      M1_FIRE_RES,
  1042. X      M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(RED) },
  1043. X    { "baby white dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
  1044. X      { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  1045. X      50, 500, 0, MS_ROAR, MZ_HUGE,
  1046. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
  1047. X      M1_COLD_RES,
  1048. X      M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(WHITE) },
  1049. X    { "baby blue dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
  1050. X      { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  1051. X      50, 500, 0, MS_ROAR, MZ_HUGE,
  1052. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
  1053. X      M1_ELEC_RES,
  1054. X      M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(BLUE) },
  1055. X    { "baby green dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
  1056. X      { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  1057. X      50, 500, 0, MS_ROAR, MZ_HUGE,
  1058. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
  1059. X      M1_POIS | M1_POIS_RES,
  1060. X      M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(GREEN) },
  1061. X    { "baby orange dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
  1062. X      { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  1063. X      50, 500, 0, MS_ROAR, MZ_HUGE,
  1064. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
  1065. X      M1_SLEE_RES,
  1066. X      M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(ORANGE_COLORED) },
  1067. X    { "baby black dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
  1068. X      { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  1069. X      50, 500, 0, MS_ROAR, MZ_HUGE,
  1070. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS,
  1071. X      M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(BLACK) },
  1072. X    { "baby yellow dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
  1073. X      { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  1074. X      50, 500, 0, MS_ROAR, MZ_HUGE,
  1075. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
  1076. X      M1_ACID | M1_STON_RES,
  1077. X      M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(YELLOW) },
  1078. X    { "gray dragon", S_DRAGON, 10, 9, -1, 20, 4, (G_GENO | 1),
  1079. X      { { AT_BREA, AD_MAGM, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
  1080. X        { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
  1081. X      150, 1500, 0, MS_ROAR, MZ_GIGANTIC,
  1082. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
  1083. X      M1_MAGIC | M1_SEE_INVIS,
  1084. X      M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS, C(GRAY) },
  1085. X    { "red dragon", S_DRAGON, 10, 9, -1, 20, -4, (G_GENO | 1),
  1086. X      { { AT_BREA, AD_FIRE, 6, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
  1087. X        { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
  1088. X      150, 1500, 0, MS_ROAR, MZ_GIGANTIC,
  1089. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
  1090. X      M1_MAGIC | M1_SEE_INVIS | M1_FIRE_RES,
  1091. X      M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS, C(RED) },
  1092. X    { "orange dragon", S_DRAGON, 10, 9, -1, 20, 5, (G_GENO | 1),
  1093. X      { { AT_BREA, AD_SLEE, 4, 25 }, { AT_BITE, AD_PHYS, 3, 8 },
  1094. X        { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
  1095. X      150, 1500, 0, MS_ROAR, MZ_GIGANTIC,
  1096. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
  1097. X      M1_MAGIC | M1_SEE_INVIS | M1_SLEE_RES,
  1098. X      M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS,
  1099. X      C(ORANGE_COLORED) },
  1100. X    { "white dragon", S_DRAGON, 10, 9, -1, 20, -5, (G_GENO | 1),
  1101. X      { { AT_BREA, AD_COLD, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
  1102. X        { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
  1103. X      150, 1500, 0, MS_ROAR, MZ_GIGANTIC,
  1104. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
  1105. X      M1_MAGIC | M1_SEE_INVIS | M1_COLD_RES,
  1106. X      M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS,
  1107. X      C(WHITE) },
  1108. X    { "black dragon", S_DRAGON, 10, 9, -1, 20, -6, (G_GENO | 1),
  1109. X      { { AT_BREA, AD_DISN, 4, 10 }, { AT_BITE, AD_PHYS, 3, 8 },
  1110. X        { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
  1111. X      150, 1500, 0, MS_ROAR, MZ_GIGANTIC,
  1112. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
  1113. X      M1_MAGIC | M1_SEE_INVIS,
  1114. X      M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS,
  1115. X      C(BLACK) },
  1116. X    { "blue dragon", S_DRAGON, 10, 9, -1, 20, -7, (G_GENO | 1),
  1117. X      { { AT_BREA, AD_ELEC, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
  1118. X        { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
  1119. X      150, 1500, 0, MS_ROAR, MZ_GIGANTIC,
  1120. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
  1121. X      M1_MAGIC | M1_SEE_INVIS | M1_ELEC_RES,
  1122. X      M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS,
  1123. X      C(BLUE) },
  1124. X    { "green dragon", S_DRAGON, 10, 9, -1, 20, 6, (G_GENO | 1),
  1125. X      { { AT_BREA, AD_DRST, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
  1126. X        { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
  1127. X      150, 1500, 0, MS_ROAR, MZ_GIGANTIC,
  1128. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
  1129. X      M1_MAGIC | M1_SEE_INVIS | M1_POIS | M1_POIS_RES,
  1130. X      M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS,
  1131. X      C(GREEN) },
  1132. X    { "yellow dragon", S_DRAGON, 10, 9, -1, 20, 7, (G_GENO | 1),
  1133. X      { { AT_BREA, AD_ACID, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
  1134. X        { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
  1135. X      150, 1500, 0, MS_ROAR, MZ_GIGANTIC,
  1136. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
  1137. X      M1_MAGIC | M1_SEE_INVIS | M1_ACID | M1_STON_RES,
  1138. X      M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS,
  1139. X      C(YELLOW) },
  1140. X/*    Elementals    */
  1141. X    { "air elemental", S_ELEMENTAL, 8, 36, 2, 30, 0, (G_NOCORPSE | 1),
  1142. X      { { AT_ENGL, AD_PHYS, 2, 10 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  1143. X      5, 0, 0, MS_SILENT, MZ_HUGE,
  1144. X      M1_FLY | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES, M2_STRONG, C(CYAN) },
  1145. X    { "fire elemental", S_ELEMENTAL, 8, 12, 2, 30, 0, (G_NOCORPSE | 1),
  1146. X      { { AT_CLAW, AD_FIRE, 3, 6 }, { AT_NONE, AD_FIRE, 0, 4 },
  1147. X        NO_ATTK, NO_ATTK, NO_ATTK },
  1148. X      5, 0, 0, MS_SILENT, MZ_HUGE,
  1149. X      M1_FLY | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES | M1_FIRE_RES,
  1150. X      M2_STRONG, C(YELLOW) },
  1151. X    { "earth elemental", S_ELEMENTAL, 8, 6, 2, 30, 0, (G_NOCORPSE | 1),
  1152. X      { { AT_CLAW, AD_PHYS, 4, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  1153. X      50, 0, 0, MS_SILENT, MZ_HUGE,
  1154. X      M1_WALLWALK | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES | M1_THICK_HIDE |
  1155. X      M1_STON_RES,
  1156. X      M2_STRONG, C(BROWN) },
  1157. X    { "water elemental", S_ELEMENTAL, 8, 6, 2, 30, 0, (G_NOCORPSE | 1),
  1158. X      { { AT_CLAW, AD_PHYS, 5, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  1159. X      50, 0, 0, MS_SILENT, MZ_HUGE,
  1160. X      M1_NOEYES | M1_NOLIMBS | M1_POIS_RES | M1_SWIM, M2_STRONG, C(BLUE) },
  1161. X/*    Fungi    */
  1162. X    { "violet fungus", S_FUNGUS, 3, 1, 7, 0, 0, (G_GENO | 2),
  1163. X      { { AT_TUCH, AD_PHYS, 1, 4 }, { AT_TUCH, AD_STCK, 0, 0 },
  1164. X        NO_ATTK, NO_ATTK, NO_ATTK }, 10, 100, 0, MS_SILENT, MZ_SMALL,
  1165. X      M1_NOEYES | M1_NOLIMBS | M1_POIS_RES,
  1166. X      M2_HOSTILE | M2_OMNIVORE, C(MAGENTA) },
  1167. X    { "brown mold", S_FUNGUS, 1, 0, 9, 0, 0, (G_GENO | 1),
  1168. X      { { AT_NONE, AD_COLD, 0, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  1169. X      5, 30, 0, MS_SILENT, MZ_SMALL,
  1170. X      M1_NOEYES | M1_NOLIMBS | M1_COLD_RES | M1_POIS_RES,
  1171. X      M2_HOSTILE | M2_OMNIVORE, C(BROWN) },
  1172. X    { "yellow mold", S_FUNGUS, 1, 0, 9, 0, 0, (G_GENO | 2),
  1173. X      { { AT_NONE, AD_STUN, 0, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  1174. X      5, 30, 0, MS_SILENT, MZ_SMALL,
  1175. X      M1_NOEYES | M1_NOLIMBS | M1_POIS | M1_POIS_RES,
  1176. X      M2_HOSTILE | M2_OMNIVORE, C(YELLOW) },
  1177. X    { "green mold", S_FUNGUS, 1, 0, 9, 0, 0, (G_GENO | 1),
  1178. X      { { AT_NONE, AD_ACID, 0, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  1179. X      5, 30, 0, MS_SILENT, MZ_SMALL,
  1180. X      M1_NOEYES | M1_NOLIMBS | M1_ACID | M1_STON_RES,
  1181. X      M2_HOSTILE | M2_OMNIVORE, C(GREEN) },
  1182. X    { "red mold", S_FUNGUS, 1, 0, 9, 0, 0, (G_GENO | 1),
  1183. X      { { AT_NONE, AD_FIRE, 0, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  1184. X      5, 30, 0, MS_SILENT, MZ_SMALL,
  1185. X      M1_NOEYES | M1_NOLIMBS | M1_FIRE_RES | M1_POIS_RES,
  1186. X      M2_HOSTILE | M2_OMNIVORE, C(RED) },
  1187. X/*    Gnomes    */
  1188. X    { "gnome", S_GNOME, 1, 6, 5, 4, 0, (G_GENO | G_SGROUP | 1),
  1189. X      { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  1190. X      10, 100, 0, MS_ORC, MZ_SMALL,
  1191. X      M1_HUMANOID | M1_COLLECT, 0, C(BROWN) },
  1192. X    { "gnome lord", S_GNOME, 3, 8, 4, 4, 0, (G_GENO | 2),
  1193. X      { { AT_WEAP, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  1194. X      15, 120, 0, MS_ORC, MZ_SMALL,
  1195. X      M1_HUMANOID | M1_COLLECT, M2_LORD, C(BLUE) },
  1196. X    { "gnome king", S_GNOME, 5, 10, 2, 20, 0, (G_GENO | 1),
  1197. X      { { AT_WEAP, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  1198. X      20, 150, 0, MS_ORC, MZ_SMALL,
  1199. X      M1_HUMANOID | M1_COLLECT, M2_PRINCE, C(HI_LORD) },
  1200. X    { "gnomish wizard", S_GNOME, 3, 10, 4, 10, 0, (G_GENO | 1),
  1201. X      { { AT_MAGC, AD_SPEL, 0, 0 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  1202. X      15, 120, 0, MS_ORC, MZ_SMALL,
  1203. X      M1_HUMANOID | M1_MAGIC, 0, C(HI_ZAP) },
  1204. X#ifdef SPLITMON_1
  1205. X};
  1206. X#endif
  1207. X#endif /* !SPLITMON_2 */
  1208. END_OF_FILE
  1209. if test 39815 -ne `wc -c <'src/monst.c1'`; then
  1210.     echo shar: \"'src/monst.c1'\" unpacked with wrong size!
  1211. fi
  1212. # end of 'src/monst.c1'
  1213. echo shar: End of archive 25 \(of 30\).
  1214. cp /dev/null ark25isdone
  1215. MISSING=""
  1216. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ; do
  1217.     if test ! -f ark${I}isdone ; then
  1218.     MISSING="${MISSING} ${I}"
  1219.     fi
  1220. done
  1221. if test "${MISSING}" = "" ; then
  1222.     echo You have unpacked all 30 archives.
  1223.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1224. else
  1225.     echo You still need to unpack the following archives:
  1226.     echo "        " ${MISSING}
  1227. fi
  1228. ##  End of shell archive.
  1229. exit 0
  1230.